﻿//============================================================
//write by bxl at 2021-05-29 14:47:49
//============================================================



using BCCommon;
using BCCommon.Enums.TMS;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.Fence;
using System.Collections.Generic;

namespace BCService.TMS.Fence
{
    public interface IFenceService
    {
        FenceDto Add(FenceRequestDto fenceRequestDto, AdminDto admin);
        void Delete(long fenceId);
        FenceDto GetById(long fenceId); 
        FenceDto Update(FencePutDto fencePutDto, AdminDto admin);
        List<FenceDto> GetIntoFenceList(double lng, double lat, string ProvinceCode, string CityCode, string CountyCode, GpsMapType gpsMapType);
        bool IsIntoFence(long fenceId, double lng, double lat, GpsMapType gpsMapType);


        /// <summary>
        /// 获取围栏列表
        /// </summary>
        /// <param name="admin"></param>
        /// <param name="workingCompanyName"></param>
        /// <param name="provinceCode"></param>
        /// <param name="cityCode"></param>
        /// <param name="countyCode"></param>
        /// <param name="fenceName"></param>
        /// <param name="isEnable"></param> 
        /// <returns></returns>
        List<FenceDto> GetOnlyList(AdminDto admin, string workingCompanyName,string provinceCode, string cityCode, string countyCode, string fenceName, bool? isEnable);

        /// <summary>
        /// 获取围栏列表 分页
        /// </summary>
        /// <param name="admin"></param>
        /// <param name="workingCompanyName"></param>
        /// <param name="provinceCode"></param>
        /// <param name="cityCode"></param>
        /// <param name="countyCode"></param>
        /// <param name="fenceName"></param>
        /// <param name="isEnable"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<FenceDto> GetList(AdminDto admin, string workingCompanyName, string provinceCode, string cityCode, string countyCode, string fenceName, bool? isEnable, int pageIndex, int pageSize);
        /// <summary>
        /// 根据劳务公司和区县编码获取围栏信息
        /// </summary>
        /// <param name="workingCompanyId">劳务公司</param>
        /// <param name="countyCode">区县编码</param>
        /// <returns></returns>
        FenceDto GetByWorkCompanyIdAndCountyCode(long workingCompanyId, string countyCode);
    }
}